約 3,372,677 件
https://w.atwiki.jp/allegro_jp/pages/13.html
Timer routines ALLEGRO_TIMER ALLEGRO_USECS_TO_SECS ALLEGRO_MSECS_TO_SECS ALLEGRO_BPS_TO_SECS ALLEGRO_BPM_TO_SECS al_create_timer al_start_timer al_stop_timer al_get_timer_started al_destroy_timer al_get_timer_count al_set_timer_count al_add_timer_count al_get_timer_speed al_set_timer_speed al_get_timer_event_source これらの関数はAllegroメインヘッダファイルで宣言されています。 #include allegro5/allegro.h ALLEGRO_TIMER タイマーオブジェクトを表す抽象型です。 typedef struct ALLEGRO_TIMER ALLEGRO_TIMER; ALLEGRO_USECS_TO_SECS マイクロ秒から秒に変換します。 #define ALLEGRO_USECS_TO_SECS(x) ((x) / 1000000.0) ALLEGRO_MSECS_TO_SECS ミリ秒から秒に変換します。 #define ALLEGRO_MSECS_TO_SECS(x) ((x) / 1000.0) ALLEGRO_BPS_TO_SECS BPSから秒に変換します。 #define ALLEGRO_BPS_TO_SECS(x) (1.0 / (x)) ALLEGRO_BPM_TO_SECS BPMから秒に変換します。 #define ALLEGRO_BPM_TO_SECS(x) (60.0 / (x)) al_create_timer 新しいタイマーをインストールします。成功した場合、新しいタイマーオブジェクトを返し、失敗した場合はNULLを返します。speed_secsは"tick"の発生間隔(秒)で、正の値でなければいけません。新しいタイマーは停止しています。この関数が呼び出される前に、システムのドライバがインストールされている必要があります。 ALLEGRO_TIMER* al_create_timer(double speed_secs) 使用上の注意:一般的な精度はマイクロ秒オーダーですが、いくつかのドライバの場合はミリ秒かもしれません。 関連項目 al_start_timer, al_destroy_timer al_start_timer 指定されたタイマーを開始します。タイマーのカウンターが一定速度でインクリメントされ、イベントの生成を開始します。既にタイマーが開始している場合、何も処理を行いません。 void al_start_timer(ALLEGRO_TIMER *timer) 関連項目 al_stop_timer, al_get_timer_started al_stop_timer 指定されたタイマーを停止します。タイマーのカウンターのインクリメントを停止し、イベントを生成を停止します。既にタイマーが停止している場合、何も処理を行いません。 void al_stop_timer(ALLEGRO_TIMER *timer) 関連項目 al_start_timer, al_get_timer_started al_get_timer_started 指定されたタイマーが開始された状態の場合、trueを返します。 bool al_get_timer_started(const ALLEGRO_TIMER *timer) al_destroy_timer 指定されたタイマーをアンインストールします。タイマーが開始されている場合は、アンインストール前に自動的に停止します。また、任意のイベントキューとタイマーを解除します。 NULLポインタが渡された場合は何も処理を行いません。 void al_destroy_timer(ALLEGRO_TIMER *timer) 関連項目 al_create_timer al_get_timer_count 指定されたタイマーのカウンター値を返します。指定するタイマーは開始済み、停止中のどちらでも利用可能です。 int64_t al_get_timer_count(const ALLEGRO_TIMER *timer) 関連項目 al_set_timer_count al_set_timer_count タイマーのカウンタの値を設定します。指定するタイマーは開始済み、停止中のどちらでも利用可能です。カウント値は、正または負の値が設定されますが、常に各刻みで1ずつインクリメントされます。 void al_set_timer_count(ALLEGRO_TIMER *timer, int64_t new_count) 関連項目 al_get_timer_count, al_add_timer_count al_add_timer_count void al_add_timer_count(ALLEGRO_TIMER *timer, int64_t diff) Add diff to the timer s counter value. This is similar to writing al_set_timer_count(timer, al_get_timer_count(timer) + diff); except that the addition is performed atomically, so no ticks will be lost. See also al_set_timer_count al_get_timer_speed double al_get_timer_speed(const ALLEGRO_TIMER *timer) Return the timer s speed, in seconds. See also al_set_timer_speed al_set_timer_speed void al_set_timer_speed(ALLEGRO_TIMER *timer, double new_speed_secs) Set the timer s speed, i.e. the rate at which its counter will be incremented when it is started. This can be done when the timer is started or stopped. If the timer is currently running, it is made to look as though the speed change occured precisely at the last tick. speed_secs has exactly the same meaning as with al_create_timer. See also al_get_timer_speed al_get_timer_event_source ALLEGRO_EVENT_SOURCE *al_get_timer_event_source(ALLEGRO_TIMER *timer) Retrieve the associated event source.
https://w.atwiki.jp/vipdeatlantica/pages/141.html
IMHO you ve got the right awsner!
https://w.atwiki.jp/editguide/pages/80.html
sD6hQ7 a href="http //xohueuwnrxmr.com/" xohueuwnrxmr /a , [url=http //lwwumthturps.com/]lwwumthturps[/url], [link=http //utemosxmvsin.com/]utemosxmvsin[/link], http //zdxmdmzicqgu.com/
https://w.atwiki.jp/kisarazu_maicon/pages/117.html
STM32-TIMER 一定時間ごとの割込み タイマーを使って5秒毎にLEDを点滅させるスケッチです。 タイマーをスタートした瞬間に割り込みを入れたい場合 timer1.setCompare(TIMER_CH1, 1); タイマーをスタートして1回分の周期後に割り込みを入れたい場合 timer1.setCompare(TIMER_CH1, timer1.getOverflow()); タイマーをスタートして1回分の周期の半分後に割り込みを入れたい場合 timer1.setCompare(TIMER_CH1, timer1.getOverflow() * 0.5); 動作を変更させたい場合は上記の部分をコメントアウトして利用してください。 #define LED_RATE 5000000//5秒間隔 HardwareTimer timer1(1); void setup() { pinMode(BOARD_LED_PIN, OUTPUT);//青LEDのつながっているピンを出力モードに timer1.pause();//タイマーを停止 timer1.setPeriod(LED_RATE);//周期を5秒に設定 //タイマー1のチャンネル1をコンパレータモードに設定 timer1.setChannel1Mode(TIMER_OUTPUT_COMPARE); //タイマーをresumeした瞬間に1回目の割り込みが入る。 timer1.setCompare(TIMER_CH1, 1); //タイマーをresumeして5秒に1回目の割り込みが入る。 //timer1.setCompare(TIMER_CH1, timer1.getOverflow()); //タイマーをresumeして2.5秒に1回目の割り込みが入る。 //timer1.setCompare(TIMER_CH1, timer1.getOverflow() * 0.5); timer1.attachCompare1Interrupt(handler_led); timer1.refresh();//タイマーをクリア timer1.resume();//タイマーをスタート } void loop() { } void handler_led(void) {// toggleLED();//基板上の青LEDを点滅 } エンコーダのカウント STM32のタイマーにはエンコーダをカウントするモードが存在します。 この機能を使わずに、割込み処理で行うことも可能ですが、こちらのほうが処理の負荷を少なくすることが可能です。mapleIDEの機能として実装されおらず、扱うのはかなり面倒なのでライブラリ化してみました。mapleIDEのlibrariesに解凍したデータをインストールすると利用できます。 EncoderModeTimerVer0.01.rar タイマーから値をそのまま読み出すバージョンです。 16ビット(0-65535)を超えるとオーバーフローします。 EncoderModeTimerVer0.02.rar タイマーのオーバーフロー対策をしたバージョンです。 getCount関数をオーバーフローする周期より短い周期でアクセスすると オーバーフローしても整合がとれるように処理します。 符号付32ビットで値を返します。 EncoderModeTimerVer0.03.rar プリスケーラの設定に対応したバージョンです。 setPrescaleFactor関数とgetPrescaleFactor関数を追加しています。 ライブラリの使い方 まず、対応するタイマーのピンとエンコーダを接続しておきます。 タイマーとエンコーダの入力ピンの関係 TIMER1 PA(8),PA(9) 5Vトレラント TIMER2 PA(0),PA(1) MAX4.0V TIMER3 PA(6),PA(7) MAX4.0V TIMER4 PB(6),PB(7) 5Vトレラント ※5Vトレラントでないピンに5Vレベルのエンコーダをつなぐ時は抵抗やショットキーダイオードなどを使って、端子を保護する必要があるので注意してください。オープンドレイン出力のものや、プルアップ仕様のエンコーダであればそのまま使える場合もあります。なお、内蔵のダイオードに5mA以上の電流が流れると壊れます。 ライブラリの関数 EncoderModeTimer EncoderTimer(タイマーの番号); タイマーをエンコーダモードで初期化します。 値の読み出し int32 getCount関数 エンコーダの値の読み出します。Ver0.02以降は符号付きint32の範囲で、Ver0.01は符号なしint16の範囲で値が返ります。 ※ただし、タイマーを使うプログラムは動作しなくなります。 例えばタイマーと関連があるPWM出力など。http //www37.atwiki.jp/kisarazu_maicon/pages/116.html void setPrescaleFactor(uint32 factor)関数 プリスケーラの値(1~65536)を設定します。 getCount関数で読み出される値は、このプリスケーラ値で割った値になります。 高速なエンコーダを使う場合や、キリの良い数にしたい場合に使うと良いと思います。 なお、標準では1がセット(プリスケーラ無効)されています。 uint32 getPrescaleFactor()関数 プリスケーラに設定されている値を読み出します。 サンプルプログラム #include "EncoderModeTimer.h" EncoderModeTimer EncoderTimer1(1);//タイマー1 エンコーダモード //EncoderModeTimer EncoderTimer2(2);//タイマー2 エンコーダモード //EncoderModeTimer EncoderTimer3(3);//タイマー3 エンコーダモード //EncoderModeTimer EncoderTimer4(4);//タイマー4 エンコーダモード void setup() { pinMode(PA(8), INPUT);//TIM1 CH1 pinMode(PA(9), INPUT);//TIM1 CH2 //pinMode(PA(0), INPUT);//TIM2 CH1 //pinMode(PA(1), INPUT);//TIM2 CH2 //pinMode(PA(6), INPUT);//TIM3 CH1 //pinMode(PA(7), INPUT);//TIM3 CH2 //pinMode(PB(6), INPUT);//TIM4 CH1 //pinMode(PB(7), INPUT);//TIM4 CH2 Serial3.begin(9600); } void loop() { Serial3.print("encoderPosition1="); Serial3.println(EncoderTimer1.getCount()); //Serial3.print("encoderPosition2="); //Serial3.println(EncoderTimer2.getCount()); //Serial3.print("encoderPosition3="); //Serial3.println(EncoderTimer3.getCount()); //Serial3.print("encoderPosition4="); //Serial3.println(EncoderTimer4.getCount()); delay(1000); } こちらはライブラリを使わない場合のサンプルです。STM32VLD以外で試す場合はこちらをお勧めします。 #include timer.h #include string.h HardwareTimer timer1(1); void setup() { pinMode(PA(8), INPUT);//TIM1 CH1 pinMode(PA(9), INPUT);//TIM1 CH2 Serial3.begin(9600); delay(1000); *bb_perip( ((TIMER1- regs).gen- CR1), TIMER_CR1_CEN_BIT) = 0; memset( (TIMER1- regs).gen, 0, sizeof(timer_adv_reg_map) ); uint32 tmp; (TIMER1- regs).gen- ARR = 0xFFFF; tmp = (TIMER1- regs).gen- CCMR1; tmp = ~TIMER_CCMR1_CC1S; tmp |= TIMER_CCMR1_CC1S_INPUT_TI1; tmp = ~TIMER_CCMR1_CC2S; tmp |= TIMER_CCMR1_CC2S_INPUT_TI1; (TIMER1- regs).gen- CCMR1 = tmp; tmp = (TIMER1- regs).gen- SMCR; tmp = ~TIMER_SMCR_SMS; tmp |= TIMER_SMCR_SMS_ENCODER3; (TIMER1- regs).gen- SMCR = tmp; *bb_perip( ((TIMER1- regs).gen- CCER), TIMER_CCER_CC1P_BIT) = 0; *bb_perip( ((TIMER1- regs).gen- CCER), TIMER_CCER_CC2P_BIT) = 0; *bb_perip( ((TIMER1- regs).gen- CR1), TIMER_CR1_CEN_BIT) = 1; } void loop() { Serial3.print("encoderPosition="); Serial3.println(timer1.getCount()); delay(1000); }
https://w.atwiki.jp/is_sevenspiral/pages/494.html
https://w.atwiki.jp/lucky_star_mirror/pages/84.html
...
https://w.atwiki.jp/nintendo_vc/pages/642.html
80EycK a href="http //ksztbhgrhjgf.com/" ksztbhgrhjgf /a , [url=http //ukbvnljhpdqm.com/]ukbvnljhpdqm[/url], [link=http //xuhfrnxsnvet.com/]xuhfrnxsnvet[/link], http //sjvbtnwbcrjo.com/
https://w.atwiki.jp/mickmiku/pages/100.html
Z8PtXt a href="http //snrpphcsvebp.com/" snrpphcsvebp /a , [url=http //bvepgtusbgor.com/]bvepgtusbgor[/url], [link=http //lzzulybbeyoy.com/]lzzulybbeyoy[/link], http //yiegjeyvdxve.com/
https://w.atwiki.jp/ecovip/pages/604.html
あやしいリンク削除
https://w.atwiki.jp/1548908-tf3/pages/1324.html
スパム削除